#include <cstdio>

template <typename X, typename Y, typename Z> struct MyTemplateClass {
  X foo(Y &);

private:
  Z *member_;
};

template <typename X, typename Y, typename Z>
X my_template_function(Y &arg1, const Z *arg2) {
  //--snip--
}

int main(int argc, char **argv) {
  auto x = 10;
  const auto &y = x;
  auto &z = const_cast<int &>(y);
  // y++;
  z++;
  printf("y = %d, z = %d\n", y, z);

  void *as_short;
  auto short_ptr = static_cast<short *>(as_short);

  auto some_ptr = reinterpret_cast<const char *>(0x12345678);

  return 0;
}
